package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.vo.PageResult;
import cn.itcast.web.controller.BaseController;
import com.github.pagehelper.PageInfo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
@RequestMapping("/company")
public class CompanyController extends BaseController {


	@Autowired
	private CompanyService companyService;

	/**
	 * 分页查询之传统分页
	 *  1、参数：当前页和每页条数
	 *  2、业务：调用service获取返回值PageResult对象，存入request域
	 *  3、修改返回页面(company-list),解析PageResult
	 */
//	@RequestMapping("/list")
//	public String list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5")int size) {
////		List<Company> list = companyService.findAll();
////		request.setAttribute("list",list);
//		PageResult pr = companyService.findAll(page,size);
//		request.setAttribute("page",pr);
//		return "company/company-list";
//	}

	/**
	 * 基于PageHelper分页形式
	 *  * 返回数据：PageInfo
	 */
	//@RequiresPermissions(value="企业管理")
	@RequestMapping("/list")
	public String list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5")int size) {
		PageInfo info =
				companyService.findAllHelper(page,size);
		request.setAttribute("page",info); //页面已经准备好：存入域对象的名字page
		return "company/company-list";
	}


	/**
	 * 前端页面中的链接：准备好的。
	 *  请求url ： /company/toAdd.do
	 * 进入保存页面：
	 *  业务：页面跳转
	 */
	@RequestMapping("/toAdd")
	public String toAdd() {
		return "company/company-add";
	}

	/**
	 * /company/toUpdate.do?id=1
	 * 进入修改页面
	 *  参数：选择的企业id
	 *  业务：
	 *      1.调用service根据id查询，company对象
	 *      2.为了页面回显数据，将company对象存入request
	 *      3.跳转页面，通过el表达式在页面获取数据
	 *  页面的处理：
	 *     在request中存放了company
	 *     页面回显的时候:${company.name}
	 */
	@RequestMapping("/toUpdate")
	public String toUpdate(String id) {
		//1.调用service根据id查询
		Company company = companyService.findById(id);
		//2.将company对象存入request
		request.setAttribute("company",company);
		//3.跳转页面
		return "company/company-update";
	}


	/**
	 * /company/edit.do
	 * 新增或者修改企业
	 *  判断依据：id（没有id：保存，有id：更新）
	 *  如果存在id：调用service更新，
	 *  如果没有id：调用service保存
	 */
	@RequestMapping("/edit")
	public String edit(Company company) {
		//1.判断传入的企业id是否为空
		if (StringUtils.isEmpty(company.getId())){ //判断传入参数是否为空
			//1.1 如果不存在id，调用service保存
			companyService.save(company);
		}else{
			//1.2 如果存在id，调用service更新
			companyService.update(company);
		}
		//2.成功之后，重定向到list.do列表
		return "redirect:/company/list.do";
	}


	/**
	 * /company/delete.do?id=4586fdff-baac-4914-b022-8eff0dcbde47
	 * 删除企业
	 *   参数：id
	 *   业务：调用service删除
	 */
	@RequestMapping("/delete")
	public String delete(String id) {
		//1.调用service删除
		companyService.delete(id);
		//2.成功之后，重定向到list.do列表
		return "redirect:/company/list.do";
	}
}
